import scrapy
from caipiao.items import CaipiaoItem

class ShuangseqiuSpider(scrapy.Spider):
    name = "shuangseqiu"   #爬虫名字
    allowed_domains = ["datachart.500.com"]  #允许的域名
    start_urls = ["https://datachart.500.com/ssq/"]  #其实的URL地址链接
    # parse方法可以对页面进行解析
    def parse(self, response):
        # 使用xpath方法对页面进行解析
        # 定位到页面中id属性值为tdata下的所有的tr标记
        trs=response.xpath("//*[@id='tdata']/tr")
        for tr in trs:
            # 每五行数据中会出现一个空的列表
            # 空列表中的tr对应的class属性值为tdbck，则终止本次循环
            if tr.xpath("./@class").extract_first()=="tdbck":
                continue
            # ./表示定位到当前标记（tr）
            # 从tr继续向下找到tr下的align属性为'center'td标记中的文本为期号的内容
            # 直接使用xpath获取元素返回一个选择器，调用extract方法进行数据提取，此时提取的是一组，
            # 当选择器中只有一个元素，使用extract_first()进行获取元素
            qihao=tr.xpath("./td[@align='center']/text()").extract_first()
            # 从tr继续向下找到tr下的class属性为'chartBall01'td标记中的文本为红球的内容
            red_ball=tr.xpath("./td[@class='chartBall01']/text()").extract()
            # 从tr继续向下找到tr下的class属性为'chartBall02'td标记中的文本为篮球的内容
            blue_ball=tr.xpath("./td[@class='chartBall02']/text()").extract_first()
            # 创建item对象（在items.py文件中进行定义可以使用的字段名字）
            caipiao=CaipiaoItem()
            # 将提取出来的期号，红球以及篮球的数据放在item中
            caipiao["qihao"]=qihao
            caipiao["red_ball"]=red_ball
            caipiao["blue_ball"]=blue_ball
            # 将数据进行返回
            yield caipiao
        pass
